草庐IT

Java Parallel Streams 关闭线程

全部标签

java - javax.servlet.ServletContext set/getAttribute 线程安全吗?

必须在javax.servlet.ServletContext中使用setAttribute()和getAttribute(String),我找不到任何关于预期的信息并发访问的行为。但是,这些操作很可能会被不同的线程调用。servletspecification3.0状态:Aservletcanbindanobjectattributeintothecontextbyname.AnyattributeboundintoacontextisavailabletoanyotherservletthatispartofthesameWebapplication.但是,没有关于这些操作的并发行

java - 单次执行后关闭 PreparedStatement——这是设计缺陷吗?

我调查了很多地方,听到了很多可疑的说法,从PreparedStatement应该比Statement更受欢迎,即使只是为了性能优势;一路声称PreparedStatement应该专门用于批处理语句,而不是其他。但是,我关注的(主要是在线的)讨论似乎存在盲点。让我展示一个具体的场景。我们有一个带有数据库连接池的EDA设计的应用程序。事件来了,有的需要坚持,有的不需要。有些是人为生成的(例如,每X分钟更新/重置一些内容)。一些事件按顺序发生和处理,但其他类型的事件(也需要持久性)可以(并且将会)并发处理。除了那些人为生成的事件之外,没有关于需要持久化的事件如何到达的结构。此应用程序是很久以

java - KeyGenerator 线程安全吗?

我想知道我是否可以实例化javax.crypto.KeyGenerator仅一次,然后在多线程环境中使用此实例。它的JavaDoc文档没有说明它的线程安全性。或者使用ThreadLocal会更好方法?更新:一个相关的问题是IsSecureRandomthreadsafe?虽然JavaDoc没有声明该类是线程安全的,但社区仍然认为它是线程安全的决定从实践的角度来看非常重要。我想知道KeyProvider的情况。 最佳答案 除非文档明确保证线程安全,否则将任何事物视为非线程安全。你是对的,这种哲学对线程安全文档的稀缺性几乎没有帮助...

java - 按特定顺序仅使用 5 个线程打印从 1 到 10 的整数

这个问题在这里已经有了答案:Print1to100using10threadsinjava(12个答案)关闭4年前。我最近开始使用Java进行多线程我在解决一个只有5个线程的问题时遇到了问题,范围从T1、T2、...T5。任务是按以下顺序打印从1到10的数字。T1->1T2->2T3->3T4->4T5->5T1->6T2->7T3->8T4->9T5->10我尝试用这段代码解决了它。publicstaticvoidmain(String[]args)throwsInterruptedException{Countercounter=newCounter();Thread[]tArra

java - 使用 JMX 获取线程 CPU 时间的有效方法

我目前通过以下方式使用JMX获取总线程CPU时间:privatelongcalculateTotalThreadCpuTime(ThreadMXBeanthread){longtotalTime=0l;for(ThreadInfothreadInfo:thread.dumpAllThreads(false,false))totalTime+=thread.getThreadCpuTime(threadInfo.getThreadId());returntotalTime;}由于ThreadMXBean实际上是一个远程代理,性能是可怕的,对于这个实际的方法调用来说是秒的数量级。有没有更快

java - 多线程类加载可能吗?

是否可以在Java中实现多线程类加载器?在元驱动的框架中,我需要提前加载数百个类,即不像系统类加载器那样懒惰。为了加速这一点,我想更好地利用当前的多核CPU。在我深入探讨之前,如果有人已经对这个问题有一些经验,或者是否可能完全清楚defineClass()可能是这种情况下的瓶颈,我会很感兴趣。谢谢安德烈 最佳答案 我相信目前您会遇到独占锁。在JDK7中,类加载器将能够将自己标记为具有并行能力。一如既往,我建议可能做一些粗略的计算,然后实事求是。 关于java-多线程类加载可能吗?,我们在

java - 如何以编程方式从我的 Java 应用程序中获取内存、线程和 CPU 使用情况?

问题说明了一切!如何以编程方式从我的Java应用程序中获取内存、线程和CPU使用情况?谢谢 最佳答案 使用ManagementFactory中的各种静态方法,例如getOperatingSystemMXBean()、getMemoryMXBean()和getThreadMXBean()。 关于java-如何以编程方式从我的Java应用程序中获取内存、线程和CPU使用情况?,我们在StackOverflow上找到一个类似的问题: https://stackove

java - SecurityContextHolder 线程安全吗?

我使用SecurityContextHolder和自定义UserDetailsS​​ervice从SecurityContextHolder获取UserDetails:Objecto=SecurityContextHolder.getContext().getAuthentication().getPrincipal();UserDetailsDTOuser=(UserDetailsDTO)o;我遗漏了空检查等,但就是这样。我在@Aspect的@Around切入点中使用它:@Around("execution(*user.service.*.*(..))")publicObjectau

java - 当 JVM 停止线程时,为 java 用户线程调用清理方法

我有在Linux上运行的J2SE应用程序。我已经停止应用程序脚本,我正在其中杀死J2SEpid。这个J2SE应用程序有6个无限运行的用户线程,它们将轮询后端数据库中的一些特定记录。当这个javapid被杀死时,我需要为每个长时间运行的线程执行一些清理操作,比如连接到数据库并将一些正在进行的事务的状态设置为空。有没有办法在每个线程中编写一个方法,在线程将要停止时由JVM调用。 最佳答案 您始终可以尝试使用Runtime.addShutDownHook实现关闭Hook,或者将长时间运行的代码封装在try中,将清理封装在finally中。

java - java.util.Vector 序列化线程安全吗?

我知道Vector类对于添加和删除元素是线程安全的[reference].如果我使用ObjectOutputStream序列化一个Vector,即使其他线程在序列化过程中添加和删除对象,我是否可以保证在反序列化时保持一致(且未损坏)的状态? 最佳答案 writeObject()方法是同步的。但是Javadoc中没有任何内容可以保证这一点,除非声明“vector是同步的”暗示了这一点。请注意,readObject()方法不需要同步,因为在readObject()返回之前,任何人都无法访问该对象。